﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Triunfadores.BusinessEntities;
using Triunfadores.Repository.Service;

namespace Triunfadores.Repository
{
    public class PrestamoRepository:MasterRepository,IPrestamoRepository
    {
        public void AddPrestamo(Prestamo prestamo)
        {
            Context.Entry(prestamo.Cliente).State = EntityState.Unchanged;
            Context.Entry(prestamo.Avalador).State = EntityState.Unchanged;
            Context.Prestamos.Add(prestamo);
            Context.SaveChanges();
        }

        public IEnumerable<Prestamo> FindSearchingFromPrestamoByDniCliente(string dni)
        {
            var query = from pr in Context.Prestamos
                where pr.Cliente.Dni.Equals(dni)
                select pr;

            return query.ToList();

        }

        public IEnumerable<Prestamo> ObtenerTodosLosPrestamos()
        {
            var query = from p in Context.Prestamos
                select p;

            return query.ToList();

        }


        public IEnumerable<Prestamo> ObtenerPretamosPorIdAvalador(int idAvalador)
        {   
            var query = from p in Context.Prestamos
                        .Include(sp => sp.Cliente.TipoCliente)
                        orderby p.FechRegistro descending 
                        where (p.IdAvalador.Equals(idAvalador) && p.Cliente.TipoCliente.Tipo=="Socio") //TODO: hacer que filtre por estado del prestamo
                        select p;

            return query.ToList();
        }

        public IEnumerable<Prestamo> ObtenerPretamosPorIdCliente(int idCliente)
        {
            var query = from p in Context.Prestamos
                        orderby p.FechRegistro descending 
                        where p.IdCliente.Equals(idCliente)
                        select p;

            return query.ToList();
        }
    }
}
